\subsection{Agile Development}

Agile is a type of iterative development, and it is quite easy to apply the process to developing a Service-Oriented Architecture. Since consumers can be built quickly to consume any number of services, it is simple to grow the consumer with what producers are available. Since Service-Oriented Architecture requires very clean boundaries between producers and consumers, it is simple to put in a stub provider while the consumer is being developed, and vice versa.

Further, building an application as a set of distinct services works well with the Agile paradigm of delivering working features after every sprint.

\subsection{Human Factors}

Service-Oriented Architecture offers a clean way to separate consumers from producers. Producers will never face a user, so development of the back-end of the system can occur with little concern over usability, as long as the service contract is defined appropriately. The consumer can likewise be built with fewer concerns, sparing more focus for usability design and testing.

\subsection{Mining Software Repositories}

Mining Software Repositories (MSP) gives developers many tools to aid development. An obvious use of MSP in building a Service-Oriented Architecture is to look at the growth of legacy code to help develop it into a service provider; much of the cost in converting a legacy application is in understanding the code itself. It is also useful to apply MSP on the service project itself to help reduce coupling between a provider and a consumer built in unison.